A generic computing platform consists of various hardware and software components. A main processor which contains a central processing unit (CPU), e.g., a microprocessor, is connected to a non-volatile code storage device (CSD), non-volatile application and file storage device (AFSD), random access memory (RAM) and other peripheral devices. The hardware dependent software that is required to initialize various hardware components is stored in the code storage device. In personal computer (PC) architecture this software is known as the BIOS (Basic Input Output System). The BIOS provides an interface between the operating system and the hardware. The process of execution of initialization software by the CPU is known as the “boot” process. A CPU can boot directly from a CSD, or in order to achieve higher performance can boot from a copy of the content of the CSD in RAM.
The background of the invention describes operation of a PC for illustrative purposes, but the invention relates more generally to starting operation of any intelligent device, and is not limited to PC architecture.
Referring to FIG. 1, in a generic computing environment, two types of non-volatile storage devices are used. These non-volatile storage devices are used for code storage and for application and file storage. Typically a code storage device (CSD) 45 has a much smaller capacity than an application and file storage device (AFSD) 40. In addition, a CSD is usually accessed after system power up or after system reset and its content is very infrequently updated by the computer system in comparison to an AFSD that is updated frequently by the applications or users of the operating system.
Traditionally the CSD 45 is hardwired to the system bus and is mapped into a specific memory location. After the completion of system power up reset or system reset, the CPU 30 will look for its initialization code in this specific location of CSD 45. This initialization code is dependent on system architecture or hardware, and in PC architecture is known as the BIOS. In other architectures this initialization code is referred to as initialization firmware, boot firmware etc. . . Examples of CSDs are EPROM, Flash ROM, and OTP PROM. An AFSD is used in order to store an operating system, application programs or general file and user data. An AFSD is a non volatile storage device such as solid state memory or a magnetic or optical drive
The BIOS or booting firmware is normally stored in the CSD 45 in order for the CPU to execute its instructions. Traditionally if boot code is stored in the AFSD 40, a small set of instructions, constituting the basic BIOS must be stored in the CSD 45 in order to copy the BIOS or booting firmware into system RAM 50. In this invention, the requirement of the CSD for storing and executing these initialization instructions is eliminated.